/**
 * 订单自动完成定时任务
 * 定期检查所有进行中的订单，将超过结束时间的订单自动设置为已完成
 */
const { Order, Car } = require('../models');
const moment = require('moment');

/**
 * 自动完成超时订单的函数
 * 可以通过定时任务调用
 */
async function autoCompleteOrders() {
    try {
        console.log('[定时任务] 开始检查超时订单...');
        const now = new Date();

        // 查找所有进行中但已经超过结束时间的订单
        const overdueOrders = await Order.find({
            status: '进行中',
            endTime: { $lt: now }
        });

        console.log(`[定时任务] 发现 ${overdueOrders.length} 个超时订单`);

        // 批量更新订单状态
        for (const order of overdueOrders) {
            // 更新订单状态为已完成
            await Order.findByIdAndUpdate(order._id, {
                status: '已完成',
                updatedAt: now
            });

            // 更新车辆状态为可租
            await Car.findByIdAndUpdate(order.carId, {
                status: '可租',
            });

            console.log(`[定时任务] 订单 ${order.orderNumber} 已自动完成`);
        }

        console.log('[定时任务] 超时订单处理完成');
        return {
            success: true,
            completedOrders: overdueOrders.length
        };
    } catch (error) {
        console.error('[定时任务] 自动完成订单失败:', error);
        return {
            success: false,
            error: error.message
        };
    }
}

module.exports = {
    autoCompleteOrders
}; 